var _ = require("lodash");
// _.assignInWith(object, sources, [customizer])
// 将一个或多个源对象的可枚举属性复制到目标对象中，并可通过自定义函数来控制复制过程
// 该自定义函数接收四个参数：(objValue, srcValue, key, object)。其中：
// objValue：目标对象的属性值。
// srcValue：源对象的属性值。
// key：属性键名。
// object：目标对象。
const object = {
  a: 1,
  b: 2,
};

const source = {
  b: 3,
  c: 4,
};

const customizer = (objValue, srcValue, key, object) => {
  // 如果目标对象中已存在相同键名的属性，则将属性值相加
  if (_.isNumber(objValue) && _.isNumber(srcValue)) {
    return objValue + srcValue;
  }
  // 否则使用默认的合并行为
  return undefined;
};

const result = _.assignInWith(object, source, customizer);

console.log(result); // 输出: { a: 1, b: 5, c: 4 }
